package com.hepinghospital.user.util;

import android.content.Context;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.Priority;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.resource.bitmap.CircleCrop;
import com.bumptech.glide.request.RequestOptions;
import com.hepinghospital.user.R;
import com.hepinghospital.user.ui.widget.GlideRoundTransform;

/**
 * @time 2020/11/18 11:07
 * Created by lbj on 2020/11/18 11:07.
 */
public class GlideUtil {

    public static void loadImage(Context context, String url, ImageView imageView) {
        RequestOptions options = new RequestOptions()
                .centerCrop()
//                       .placeholder(R.mipmap.ic_launcher_round) //预加载图片
                .error(R.drawable.ic_launcher_foreground) //加载失败图片
                .priority(Priority.HIGH) //优先级
                .diskCacheStrategy(DiskCacheStrategy.RESOURCE);//缓存
//                .transform( new CircleCrop() ); //圆形

        Glide.with(context)
                .load(url)
                .skipMemoryCache(false)//跳过内存缓存。
                .dontAnimate() //直接显示图片而没有任何淡入淡出效果
//                .diskCacheStrategy( DiskCacheStrategy.RESOURCE )//全部使用磁盘缓存
                .error(R.mipmap.icon)
                .apply(options)
                .into(imageView);
    }

    public static void loadImageCircle(Context context, String url, ImageView imageView, int defaultPic) {
        RequestOptions options = new RequestOptions()
                .centerCrop()
                .placeholder( defaultPic ) //预加载图片
                .error( defaultPic ) //加载失败图片
                .priority( Priority.HIGH ) //优先级
                .diskCacheStrategy( DiskCacheStrategy.RESOURCE )//缓存
                .transform( new CircleCrop() ); //圆形

        Glide.with( context )
                .load( url )
                .skipMemoryCache( false )//跳过内存缓存。
                .dontAnimate() //直接显示图片而没有任何淡入淡出效果
//                .diskCacheStrategy( DiskCacheStrategy.RESOURCE )//全部使用磁盘缓存
                .error( defaultPic )
                .apply( options )
                .into( imageView );
    }


    public static void loadImage(Context context, String url, ImageView imageView, int defaultPic) {

        RequestOptions options = new RequestOptions()
                .centerCrop()
                .placeholder( defaultPic ) //预加载图片
                .error( defaultPic ) //加载失败图片
                .priority( Priority.HIGH ) //优先级
                .diskCacheStrategy( DiskCacheStrategy.RESOURCE ); //缓存

        Glide.with( context )
                .load( url )
                .skipMemoryCache( false )//跳过内存缓存。
                .dontAnimate()
//                .diskCacheStrategy( DiskCacheStrategy.RESOURCE )//全部使用磁盘缓存
                .error( defaultPic )
                .apply( options )
                .into( imageView );
    }

    public static void loadImageFitXY(Context context, String url, ImageView imageView, int defaultPic) {
        RequestOptions options = new RequestOptions()
                .error( defaultPic ) //加载失败图片
                .priority( Priority.HIGH ) //优先级
                .diskCacheStrategy( DiskCacheStrategy.RESOURCE );//缓存

        Glide.with(context)
                .load(url)
                .skipMemoryCache(false)//跳过内存缓存。
                .dontAnimate() //直接显示图片而没有任何淡入淡出效果
//                .diskCacheStrategy( DiskCacheStrategy.RESOURCE )//全部使用磁盘缓存
                .error( defaultPic )
                .apply( options )
                .into( imageView );
    }

    /**
     * 加载圆角图片
     *
     * @time 2020/11/19 13:07
     */
    public static void loadRoundImage(Context context, String url, ImageView imageView) {
        //diskCacheStrategy(DiskCacheStrategy strategy).设置缓存策略。
        //DiskCacheStrategy.SOURCE：缓存原始数据;
        //DiskCacheStrategy.RESULT：缓存变换(如缩放、裁剪等)后的资源数据;
        //DiskCacheStrategy.NONE：什么都不缓存;
        //DiskCacheStrategy.ALL：缓存SOURC和RESULT。
        RequestOptions options = new RequestOptions()
                .centerCrop()
//                       .placeholder(R.mipmap.ic_launcher_round) //预加载图片
                .error(R.drawable.ic_launcher_foreground) //加载失败图片
                .priority(Priority.HIGH) //优先级
                .diskCacheStrategy(DiskCacheStrategy.DATA)//缓存
                .transform(new GlideRoundTransform(5)); //圆角

        Glide.with(context)
                .load(url)
                .skipMemoryCache(false)//跳过内存缓存。
                .dontAnimate() //直接显示图片而没有任何淡入淡出效果
//                .diskCacheStrategy( DiskCacheStrategy.RESOURCE )//全部使用磁盘缓存
                .error(R.mipmap.icon)
                .apply(options)
                .into(imageView);
    }

    //加载本地圆形图片
    public static void loadImageCircleLocal(Context context, int url, ImageView imageView, int defaultPic) {
        RequestOptions options = new RequestOptions()
                .centerCrop()
                .placeholder( defaultPic ) //预加载图片
                .error( defaultPic ) //加载失败图片
                .priority( Priority.HIGH ) //优先级
                .diskCacheStrategy( DiskCacheStrategy.RESOURCE )//缓存
                .transform( new CircleCrop() ); //圆形

        Glide.with( context )
                .load( url )
                .skipMemoryCache( false )//跳过内存缓存。
                .dontAnimate() //直接显示图片而没有任何淡入淡出效果
//                .diskCacheStrategy( DiskCacheStrategy.RESOURCE )//全部使用磁盘缓存
                .error( defaultPic )
                .apply( options )
                .into( imageView );
    }

    public static void loadRoundImage(Context context, String url, ImageView imageView, int placeHolder) {
        //diskCacheStrategy(DiskCacheStrategy strategy).设置缓存策略。
        //DiskCacheStrategy.SOURCE：缓存原始数据;
        //DiskCacheStrategy.RESULT：缓存变换(如缩放、裁剪等)后的资源数据;
        //DiskCacheStrategy.NONE：什么都不缓存;
        //DiskCacheStrategy.ALL：缓存SOURC和RESULT。
        RequestOptions options = new RequestOptions()
                .centerCrop()
                .placeholder(placeHolder) //预加载图片
                .error(placeHolder) //加载失败图片
                .priority(Priority.HIGH) //优先级
                .diskCacheStrategy(DiskCacheStrategy.DATA)//缓存
                .transform(new GlideRoundTransform(5)); //圆角

        Glide.with(context)
                .load(url)
                .skipMemoryCache(false)//跳过内存缓存。
                .dontAnimate() //直接显示图片而没有任何淡入淡出效果
//                .diskCacheStrategy( DiskCacheStrategy.RESOURCE )//全部使用磁盘缓存
                .error(R.mipmap.icon)
                .apply(options)
                .into(imageView);
    }

}
